﻿using FluentNHibernate.Mapping;
using Sebrae.Academico.Trilhas.Dominio.Classes;
using System;

namespace Sebrae.Academico.Trilhas.BM.Mapeamentos
{
    
    public sealed class ItemTrilhaParticipacaoMap : ClassMap<ItemTrilhaParticipacao>
    {
        /// <summary>
        /// Construtor.
        /// </summary>
        public ItemTrilhaParticipacaoMap()
        {

            Table("TB_ITEMTRILHAPARTICIPACAO");
            LazyLoad();
            Id(x => x.ID).GeneratedBy.Identity().Column("ID_ITEMTRILHAPARTICIPACAO");
            References(x => x.UsuarioTrilha).Column("ID_USUARIOTRILHA");
            References(x => x.ItemTrilha).Column("ID_ITEMTRILHA");
            Map(x => x.TextoParticipacao).Column("TX_PARTICIPACAO");
            Map(x => x.ArquivoParticipacao).Column("NM_ARQUIVOPARTICIPACAO").Length(100).Nullable();
            Map(x => x.TipoArquivoParticipacao).Column("TP_ARQUIVOPARTICIPACAO").Length(100).Nullable();

            
            //Table("TB_ITEMTRILHAPARTICIPACAO");
            //LazyLoad();
            //Id(x => x.ID, "ID_ITEMTRILHAPARTICIPACAO").GeneratedBy.Identity();

            //References(x => x.UsuarioTrilha).Column("ID_USUARIOTRILHA").Not.Nullable().Cascade.SaveUpdate()
            //    .LazyLoad(); //.UniqueKey("uk_usuario_item_trilha_partipacao");
            ////TodO -> Sugestão para incluir a foreign key
            ////.ForeignKey("fk_CodUsuarioTrilha_Trilha_Nivel");

            //References(x => x.ItemTrilha).Column("ID_ITEMTRILHA").Not.Nullable().Cascade.SaveUpdate()
            //    .LazyLoad(); //.UniqueKey("uk_usuario_item_trilha_partipacao");
            ////TodO -> Sugestão para incluir a foreign key
            ////.ForeignKey("fk_CodItemTrilha_Trilha_Nivel");

            //Map(x => x.ArquivoParticipacao).Column("NM_ARQUIVOPARTICIPACAO").Length(100).Nullable();
            //Map(x => x.TextoParticipacao).Column("TX_PARTICIPACAO").Nullable();
            //Map(x => x.TipoArquivoParticipacao).Column("TP_ARQUIVOPARTICIPACAO").Length(100).Nullable();


            //Map(x => x.DataParticipacao).Column("DataParticipacao").CustomType<DateTime>()
            //  .Access.Property().CustomSqlType("DATETIME").Not.Nullable();

        }

    }

}